package com.example.interview.algorithm;

import com.sun.deploy.util.StringUtils;

import javax.xml.crypto.Data;
import java.util.Arrays;

/**
 * 输入一个英文句子，翻转句子中单词的顺序，但单词内字啊的顺序不变。为简单起见，标点符号和普通字母一样处理。
 * 例如输入字符串”I am a student. ”，则输出”student. a am I”。
 *
 * @author gaobing
 * @Description: TODO
 * @date 2018年10月16日 下午2:54:27
 * 思路：第一步翻转句子中所有的字符。比如翻转“I am a student. ”中所有的字符得到”.tneduts a m a I”，
 * 此时不但翻转了句子中单词的顺序，连单词内的字符顺序也被翻转了。
 * 第二步再翻转每个单词中字符的顺序，就得到了”student. a am I”。这正是符合题目要求的输出。
 */
public class Test42StringReverse {

    /**
     * 题目一：输入一个英文句子，翻转句子中单词的顺序，但单词内字啊的顺序不变。
     *
     * @param data
     * @return
     */
    public static String reverseSentence01(String data) {
        if (data == null) {
            return data;
        }
        String[] split = data.split(" ");
        int start = 0;
        int end = split.length - 1;
        String temp = "";
        while (start < end) {
            temp = split[start];
            split[start] = split[end];
            split[end] = temp;
            start++;
            end--;
        }
        return StringUtils.join(Arrays.asList(split), " ");

    }

    public static String reverseSentence02(String data) {
        if (data == null) {
            return data;
        }
        String[] split = data.split(" ");
        int start = 0;
        int end = split.length - 1;
        String temp = "";
        while (start < end) {
            temp = split[start];
            split[start] = split[end];
            split[end] = temp;
            start++;
            end--;
        }
        return StringUtils.join(Arrays.asList(split), " ");

    }



    public static void main(String[] args) {
        test01();
        //test02();
    }

    private static void test01() {
        reverseSentence01("I am a student.");

    }


}
